/**
 * std::future 和 std::async配合使用
 * std::async用于关联异步任务
 */

#include <iostream>
#include <future>
#include <chrono>
#include <thread>

int async_task(int num1, int num2)
{
    std::this_thread::sleep_for(std::chrono::seconds(3));
    return num1+num2;
}

int main()
{
    std::future<int> return_future = std::async(std::launch::async, async_task, 1, 2);

    // 继续执行其他任务
    int sum = 0;
    for(int i = 1; i < 11; i++)
    {
        sum += i;
    }
    std::cout << "主要线程中任务执行的结果为: " << sum << std::endl;

    // 获取异步操作的结果
    int ret = return_future.get();
    std::cout << "异步操作的执行结果为: " << ret << std::endl;

    return 0;
}